%matplotlib inline
%load_ext autoreload
%autoreload 2
from __future__ import division
from functions import *
from utils import *
from gevi_classes import *
%%javascript
IPython.OutputArea.auto_scroll_threshold = 1000;
# instantiate utility class
gr = Graph()
Data collected in 5 X 1min, with 1min pause in between 2921 images obtained in 60s
username = os.path.expanduser('~').split('/')[-1]
if username == "GP1514":
print("At Imperial")
mouseAPath = '/Volumes/DATA/GEVI/MouseA/'
mouseBPath = '/Volumes/DATA/GEVI/MouseB/'
mouseM1217FPath = '/Volumes/DATA/GEVI/M1217F/'
mouseM1223MPath = '/Volumes/DATA/GEVI/M1223M/'
else:
print("Using laptop")
mouseAPath = '/Users/guillaume/Projects/GEVI-DATA/2014 Oct 27/'
mouseBPath = '/Users/guillaume/Projects/GEVI-DATA/2014 Oct 22/'
mouseCPath = '/Users/guillaume/Projects/GEVI-DATA/2014 Oct 28/'
discard = loadDic()
discard
mouseA = Mouse('mouseA', mouseAPath, [3,4,5,6],discard['MouseA'] )
# mouseA = Mouse('mouseA', mouseAPath, [3],discard['MouseA'] )
mouseB = Mouse('mouseB', mouseBPath, [2,3,4,5],discard['MouseB'] )
mouseM1217F = Mouse('mouseM1217F', mouseM1217FPath, range(1,14),discard['MouseC'] )
mouseM1223M = Mouse('mouseM1223M', mouseM1223MPath, range(21,36),discard['MouseC'] )
mouseA.loadData()
mouseB.loadData()
mouseM1217F.loadData(split=True)
mouseM1223M.loadData(split=True)
# mouseB.experiments[1].repeats[0].setInfo('End of transition, then discard')
# mouseB.experiments[2].repeats[0].setInfo('Transition to anesthesia')
# mouseA.experiments[0].repeats[2].setInfo('Keep')
# mouseA.experiments[2].repeats[1].setInfo('Transition to desynchronization: short periods of silence trigger recovery of hemodynamics')
# mouseA.experiments[3].repeats[1].setInfo('Woke up - Discard')
# mouseA.experiments[3].repeats[2].setInfo('Discard')
# mouseA.experiments[3].repeats[3].setInfo('Discard')
# mouseA.experiments[3].repeats[4].setInfo('Discard')
# mouseA.getInfo()
# mouseB.getInfo()
#len(mouseM1217F.experiments[0].repeats[0].mRatio)
len(mouseM1217F.experiments[0].repeats[0].ratio)
gr.plotHV(mouseM1217F)
gr.plotHV(mouseM1223M)
def meanCorH(mouse):
corH = np.mean(flatten(mouse.experiments.corH))
return corH
def meanCorR(mouse):
corR = np.mean(flatten(mouse.experiments.corR))
return corR
# optimization for mouseA
def fn(p_est):
alpha = [guess_function(xi,p_est[0],p_est[1],p_est[2]) for xi in x]
gr.computeCorr(mouseM1223M, alpha)
corR = np.mean(flatten(mouseM1223M.experiments.corR))
res = (1 - corR)**2
# print('%.2f \t\t t0:%.5f \t t1:%.5f \t t2:%.5f \t t3:%.5f'%(res, p_est[0],p_est[1],p_est[2], p_est[3]))
return res
def fnH(p_est):
alpha = [guess_function(xi,p_est[0],p_est[1],p_est[2]) for xi in x]
gr.computeCorr(mouseM1223M, alpha)
corH = np.mean(flatten(mouseM1223M.experiments.corH))
res = (1 - corH)**2
# print('%.2f \t\t t0:%.5f \t t1:%.5f \t t2:%.5f \t t3:%.5f'%(res, p_est[0],p_est[1],p_est[2], p_est[3]))
return res
def computeAndPlotCorr(mouse, alpha):
for i,exp in enumerate(mouse.experiments):
for j,rep in enumerate(exp.repeats):
gr.plotRModel(mouse, exp = i, rep = j,alpha = alpha )
gr.plotHModel(mouse, exp = i, rep = j,alpha = alpha )
gr.corrCoeff(mouse, exp = i, rep = j,alpha = alpha )
x = np.real(xax(mouseM1217F.experiments[0].repeats[0].mRatio, 60000*4))
r= mouseA.experiments[0].repeats[0].ratio
out=np.ones((60,60))
# filtering parameters
# mouseM1217F.minFreqAlpha = 1
# mouseM1217F.maxFreqAlpha = 200
# mouseM1223M.minFreqAlpha = 1
# mouseM1223M.maxFreqAlpha = 200
mouseA.window = 1
gr.fHmax = 30
gr.fRmax = 200
gr.plotTF(mouseM1217F)
gr.plotmTF(mouseM1217F)
gr.plotTF(mouseM1223M)
gr.plotmTF(mouseM1223M)
# alpha = mouseA.experiments[3].repeats[3].meanAlphaModel
# mouseM1217F.experiments[0].repeats[0].getAlpha()
alpha = mouseM1217F.experiments[10].repeats[0].alpha
gr.plotRModel(mouseM1217F, exp = 2, rep = 0,alpha = alpha )
gr.plotHModel(mouseM1217F, exp = 2, rep = 0,alpha = alpha )
alpha = mouseM1223M.experiments[0].repeats[0].meanAlphaModel
gr.plotRModel(mouseM1217F, exp = 2, rep = 0,alpha = alpha )
gr.plotHModel(mouseM1217F, exp = 2, rep = 0,alpha = alpha )
# alpha = mouseA.experiments[3].repeats[3].meanAlphaModel
# gr.fHmax=50
# gr.fRmax=50
# mouseM1223M.experiments[2].repeats[0].getAlpha()
alpha = mouseM1223M.experiments[4].repeats[0].meanAlphaModel
gr.plotRModel(mouseM1217F, exp = 2, rep = 0,alpha = alpha, window=10 )
gr.plotHModel(mouseM1217F, exp = 2, rep = 0,alpha = alpha, window=10 )
plt.figure()
plt.plot(alpha)
alpha = mouseM1223M.experiments[2].meanAlphaModel
fontsize=16
plt.plot(xax(alpha,60000),alpha)
plt.xlabel('Time [s]')
plt.title('Alpha model of mean TF mouse B')
plt.text(30,-0.01, r'$ \tau_{0} = %.2g$' %mouseM1223M.experiments[2].meanAlphaParams[0], fontsize =fontsize)
plt.text(30,-0.02, r'$ \tau_{1} = %.2g$' %mouseM1223M.experiments[2].meanAlphaParams[1], fontsize =fontsize)
plt.text(30,-0.03, r'$ \tau_{2} = %.2g$' %mouseM1223M.experiments[2].meanAlphaParams[2], fontsize =fontsize)
gr.computeCorr(mouseM1217F, alpha=None)
gr.computeCorr(mouseM1223M, alpha=None)
gr.computeAlphaModels(mouseM1217F)
gr.computeAlphaModels(mouseM1223M)
gr.plotParamsIndex(mouseM1217F)
gr.plotParamsIndex(mouseM1223M)
gr.plotParamsCor(mouseM1217F)
gr.plotParamsCor(mouseM1223M)
print([meanCorR(mouseM1217F),meanCorH(mouseM1217F),meanCorR(mouseM1223M), meanCorH(mouseM1223M)])
resultHemo = minimize(fnH, x0=[1,1,1], method = 'COBYLA',
options={'gtol': 1e-8, 'disp': True})
print(resultHemo)
p_est = resultHemo.x
alpha = [guess_function(xi,p_est[0],p_est[1],p_est[2]) for xi in x]
plt.plot(xax(alpha,4*60000),alpha)
# alpha2 = mouseB.experiments[2].meanAlphaModel
# plt.plot(xax(alpha2,60000),alpha2)
# computeAndPlotCorr(mouseA, alpha)
gr.plotRModel(mouseM1217F,2,0,alpha)
gr.plotHModel(mouseM1217F,2,0,alpha)
# gr.plotHModel(mouseA,2,4,mouseB.experiments[2].meanAlphaModel)
# gr.plotRModel(mouseA,2,4,mouseB.experiments[2].meanAlphaModel)
def printl(tab):
for t in tab:
print(t)
# bounds = [(-10,10),(-10,10),(-10,10),(-10,10)]
# resultVolt = differential_evolution(fn, bounds, init = 'random')
resultVolt = minimize(fn, method = 'COBYLA', x0=[-1e-2,1,10,1],
options={'gtol': 1e-6, 'disp': True})
print(resultVolt)
p_est = resultVolt.x
print(p_est)
alpha = [guess_function(xi,p_est[0],p_est[1],p_est[2]) for xi in x]
plt.title('Optimized Alpha model of mean TF mouse B, exp %d'%(2+mouseB.start))
plt.text(30,0.5, r'$ \tau_{0} = %.2g$' %p_est[0], fontsize =fontsize)
plt.text(30,1.5, r'$ \tau_{1} = %.2g$' %p_est[1], fontsize =fontsize)
plt.text(30,2.5, r'$ \tau_{2} = %.2g$' %p_est[2], fontsize =fontsize)
plt.plot(xax(alpha,4*60000),alpha)
gr.plotRModel(mouseM1217F,2,0,alpha)
gr.plotHModel(mouseM1217F,2,0,alpha)
##
gr.plotRModel(mouseM1217F,9,0,alpha)
gr.plotHModel(mouseM1217F,9,0,alpha)
p_est = [0.4121683, 1.09384498, 3.68435018, 0.98029149]
alpha = [guess_function(xi,p_est[0],p_est[1],p_est[2]) for xi in x]
gr.plotRModel(mouseM1217F,2,0,alpha)
gr.plotHModel(mouseM1217F,2,0,alpha)
gr.plotRModel(mouseM1217F,9,0,alpha)
gr.plotHModel(mouseM1217F,9,0,alpha)
alpha = mouseM1223M.experiments[0].repeats[0].meanAlphaModel
plt.figure(figsize=(10,1))
plt.plot(alpha)
gr.plotRModel(mouseM1217F, exp = 9, rep = 0,alpha = alpha )
gr.plotHModel(mouseM1217F, exp = 9, rep = 0,alpha = alpha )
alpha = mouseM1223M.experiments[4].repeats[0].meanAlphaModel
plt.figure(figsize=(10,1))
plt.plot(alpha)
gr.plotRModel(mouseM1217F, exp = 9, rep = 0,alpha = alpha )
gr.plotHModel(mouseM1217F, exp = 9, rep = 0,alpha = alpha )